package com.demo.config.ex.handler;

import com.alibaba.excel.exception.ExcelDataConvertException;
import com.demo.common.model.R;
import com.demo.config.ex.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice // 当前注解接收的时@RestController类中的抛出的异常
//@ControllerAdvice // 当前注解接收的时@Controller类中的抛出的异常
public class GlobalExceptionHandler {
    /*
        专门处理我们自己自定义异常
     */
    @ExceptionHandler(BusinessException.class)
    public R<String> handlerBusinessException(BusinessException e){
        log.info("服务器异常：{}",e.getMessage());
        return R.FAIL("服务器异常，原因："+e.getMessage());
    }
    /**
     * 如果没有指定异常处理，那么所有异常处理都会走这里
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public R<String> handlerException(Exception e){
        log.info("服务器异常：{}",e.getMessage());
        return R.FAIL("服务器异常，原因："+e.getMessage());
    }
    /**
     * EasyExcel 解析 Excel 时出现的类型转换异常。
     */
    @ExceptionHandler(ExcelDataConvertException.class)
    public R<String> handlerExcelDateConvertException(ExcelDataConvertException e){
        log.info("Excel表格数据转换异常：{}",e.getMessage());
        return R.FAIL(e.getMessage());
    }
}
